<?php
//Ultima verificacion: 13-10-2014 ; 21-11-2014 ; 20-02-2015
class M_ciclo_lectivo extends CI_Model {
	function _construct(){
		//Call the Model constructor
		parent::_construct();
	}
	
	//Este metodo se utiliza cuando queremos obtener los ciclos lectivos existentes menos los borrados.
	function buscar($restriccion=null){
		$consulta = $this->db->query("SELECT ciclolectivo.*, DATE_FORMAT(ciclolectivo.fechaCreacion,'%d/%m/%Y %H:%i:%s') AS fechaCreacionFormateada, 
															 DATE_FORMAT(ciclolectivo.fechaUltimaModificacion,'%d/%m/%Y %H:%i:%s') AS fechaUltimaModificacionFormateada
									  FROM ciclolectivo
									  WHERE ciclolectivo.estado<>-1 $restriccion
									  ORDER BY ciclolectivo.nombre ASC");
		return($consulta);
	}
		
	//Este metodo se utiliza para eliminar un ciclo lectivo
	function eliminar($idCicloLectivo=null, $idDestructor=null){
		$consulta = $this->db->query("UPDATE `ciclolectivo` 
									 SET `estado` = -1,
										 `idDestructor` = ". $this->db->escape($idDestructor) ."
							         WHERE `ciclolectivo`.`idCicloLectivo` = " . $this->db->escape($idCicloLectivo) . " LIMIT 1");
		return($this->db->affected_rows());
	}
	
	//Este metodo se utiliza para crear un ciclo lectivo
	function crear($nombre=null, $descripcion=null, $estado=null, $idCreador=null){
		//Si el ciclo a crear tiene que estar vigente, entonces, como solo uno puede estar vigente, pasamos a todos a no vigentes
		if($estado==1) $consulta = $this->db->query("UPDATE `ciclolectivo` SET `estado` = 0 WHERE estado=1");
		
		$this->db->query("INSERT INTO `ciclolectivo` (`idCicloLectivo`,`nombre`,`descripcion`,`fechaCreacion`,`estado`,`idCreador`) VALUES 
												     (NULL,".$this->db->escape($nombre).",".$this->db->escape($descripcion).",now(),".$this->db->escape($estado).",".$this->db->escape($idCreador).")");
		return($this->db->affected_rows());
	}
	
	//Este metodo se utiliza cuando queremos devolver un ciclo lectivo en particular usado generalmente en el formulario de modificar o bien para
	//validar que el ciclo lectivo pasado por la url sea existente.
	function get($idCicloLectivo=null){
		$consulta = $this->db->query("SELECT *
									  FROM ciclolectivo
									  WHERE estado<>-1 AND idCicloLectivo=".$this->db->escape($idCicloLectivo)."
									  LIMIT 1");
		return($consulta);
	}
	
	//Este metodo se utiliza cuando queremos devolver el ciclo lectivo contiguo a uno en particular usado generalmente en el formulario de modificar
	function getContiguo($idCicloLectivo=null, $cant=null){
		do{			
			$idCicloLectivo+=$cant;
			$consulta = $this->db->query("SELECT *
										  FROM ciclolectivo
										  WHERE idCicloLectivo=".$this->db->escape($idCicloLectivo)."
										  LIMIT 1");
			if($consulta->num_rows == 0)
				return(0);
			
		}while($consulta->row()->estado=='-1');
		
		return($consulta->row()->idCicloLectivo);
	}
	
	//Este metodo se utiliza cuando queremos devolver el UNICO ciclo lectivo VIGENTE
	function getVigente(){
		$consulta = $this->db->query("SELECT *
									  FROM ciclolectivo
									  WHERE estado=1
									  LIMIT 1");
		return($consulta);
	}
	
	//Este metodo se utiliza para modificar un ciclo lectivo
	function modificar($idCicloLectivo=null, $nombre=null, $descripcion=null, $estado=null){
		//Si el ciclo a modificar tiene que estar vigente, entonces, como solo uno puede estar vigente, pasamos a todos a no vigentes
		if($estado==1) $consulta = $this->db->query("UPDATE `ciclolectivo` SET `estado` = 0 WHERE estado=1");
		
		$consulta = $this->db->query("UPDATE `ciclolectivo` 
									 SET `nombre` = ". $this->db->escape($nombre) .",
									     `descripcion` = ". $this->db->escape($descripcion) .",
										 `estado` = ". $this->db->escape($estado) ."
							         WHERE `ciclolectivo`.`idCicloLectivo` = " . $this->db->escape($idCicloLectivo) . " LIMIT 1");
		return($this->db->affected_rows());
	}
}
?>